// eventBus.js
import mitt from 'mitt';

const eventBus = mitt();
const registeredEvents = new Map(); // 使用 Map 来存储事件及其处理器

function on(event, handler) {
  // 如果事件已注册，先移除旧的处理器
  if (registeredEvents.has(event)) {
    const oldHandler = registeredEvents.get(event);
    eventBus.off(event, oldHandler); // 移除旧的处理器
  }

  eventBus.on(event, handler); // 注册新的处理器
  registeredEvents.set(event, handler); // 记录新的处理器
}

function off(event, handler) {
  if (registeredEvents.has(event)) {
    eventBus.off(event, handler);
    registeredEvents.delete(event); // 移除事件记录
  }
}

function emit(event, data) {
  eventBus.emit(event, data);
}

export { on, off, emit };
